/**
 * 语言服务核心模块
 * 提供4GL语言特性相关的核心功能
 */
import { getKeys, getIgnoreKeys } from '../data'
import { getIntersection } from '../utils'

/**
 * 大小写检查函数
 * 检查关键字是否应该使用大写但实际使用了小写
 * @param line 行内容
 * @returns 需要大写的关键字数组
 */
export const checkKeywordCase = (line: string): string[] => {
	// 提取代码部分（去除注释）
	const codePart = line.split('#')[0].split('--')[0]
	if (!codePart) return []

	// 分割单词并过滤空字符串
	const words = codePart.split(/\s+/).filter(Boolean)
	const keys = getKeys().map(k => k.toLowerCase())
	const ignoreKeys = getIgnoreKeys()
	
	// 获取需要检查的关键字（在关键字列表中但不在忽略列表中）
	const needKeys = getIntersection(
		getIntersection(keys, words),
		ignoreKeys.map(k => k.toLowerCase())
	).filter(k => !ignoreKeys.includes(k))

	return needKeys
}

/**
 * 检查语法结束
 * 检查语句是否有未正确结束的情况
 * @param line 行内容
 * @returns 是否需要语法结束检查
 */
export const checkStatementEnd = (line: string): boolean => {
	// 检查 CALL 语句结尾
	return line.trim().toUpperCase().endsWith('CALL')
}